#include "Ugyfellista.h"

using namespace std;

Ugyfellista::Ugyfellista(std::string fname){


    file=fname;     //file megnyitása
    ugyfellista.open (file.c_str(), fstream::out | fstream::in | fstream::app);
    if (ugyfellista.fail()) {throw OPEN_ERROR;}

    cout << "----------------Ugyfellista--------------\n";

    ugyfels akt;    //Ügyfelek listázása

    size=0;
    ugyfellista >> akt;
    if (ugyfellista.fail()){size=0;cout<<"\t--nincs adat--\n";}
    else {
        size++;
        while (!ugyfellista.eof()){
            cout << size-1 << " " << akt << endl;
            size++;
            ugyfellista >> akt;
        }
        cout << size-1 << " " << akt << endl;
    }

    int z=0;        //mûvelet választás
    string rubbish;
    bool l=true;       //elágazásból való kilépéshez
    bool first=true;    //az első belépésnél nem írja ki újra a file tartalmát
    while(l){
        if(!first){
            ugyfellista.close();                            //file újranyitása
            ugyfellista.open (file.c_str(), fstream::out | fstream::in | fstream::app);
            if (ugyfellista.fail()) {throw OPEN_ERROR;}
            cout << "----------------Ugyfellista--------------\n";  //file tartalmának kiírása
            ugyfels akt;    //Ügyfelek listázása
            int size2=0;
            while (!ugyfellista.eof())
            {
                ugyfellista >> akt;
                cout << size2 << " " << akt << endl;
                size2++;
            }
        }
        first=false;
        cout << "\t\nMUVELETEK:\n ugyfel hozzaadasa: 1\n ugyfeladatok lekerdezese: 2\n kilepes: 3\n\t ";  //művelet választás
        cin >> z;
        switch (z){
            case 1:
                AddUgyfel();
                size++;
                break;
            case 2:
                WriteUgyfel();
                cout << endl;
                break;
            case 3:
                l=false;
                break;
            default:
                string rubbish;
                cin.clear();
                getline(cin,rubbish,'\n');
                cout << "Hibas adat\n";
                break;
        }
    }
}

void Ugyfellista::WriteUgyfel(){
    int i;  //választandó ügyfél száma
    do{
        string rubbish;
        cin.clear();
        getline(cin,rubbish,'\n');
        cout << "valasztott ugyfel szama: ";
        cin >> i;
    }
    while (i<0 || i>=size || cin.fail());

    string fname = convertInt(i);
    Ugyfel ugyfel(addData(fname));    //következő szint
}

void Ugyfellista::AddUgyfel(){

    //Adatok bekérése
    ugyfels uj;
    uj.setAll();

    //saját file létrehozása
    ofstream ugyfel(addData(convertInt(size)).c_str());
    ugyfel << uj.getNev() << " " << uj.getTelefonszam() << endl;
    ugyfel.close();

    //ügyféllista végére írás
    ugyfellista.close();
    ugyfellista.open (file.c_str(), fstream::out | fstream::in | fstream::app);
    if (ugyfellista.fail()) {throw OPEN_ERROR;}
    ugyfellista << endl << uj.getNev() << " " << convertInt(size);

    cout << "az ugyfel letrehozasa sikerult.\n";
}

Ugyfellista::~Ugyfellista()
{
    ugyfellista.close();
}
